package ca.kooki.codesnippet;

import ca.kooki.codesnippet.core.Action;
import ca.kooki.codesnippet.core.ActionResponse;
import ca.kooki.codesnippet.core.SearchInput;
import ca.kooki.codesnippet.core.User;

public interface CodeSnippetRepository 
{
  ActionResponse addCodeSnippet(CodeSnippet snippet);
  ActionResponse addUser(User user);
  ActionResponse addTag(Tag tag);
  Tag[] getAllTags(String searchQuery);
  StatisticSummary getStatistics();
  ActionResponse isValid();
  
  boolean isUser(String username);
  User getUserByUsername(String username);
  CodeSnippet[] getAllSnippets();
  User[] getAllUsers();
  SearchInput[] getAllSearches(String searchQuery);
  Action[] getAllActions();
  User getUser();
  void setUser(User user);
  void setUser(String username);
  
}
